iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0

資料庫複制、身份驗證都有了,還能做什麼讓我們的資料更加安全呢?喔對了,還可以備份我們的資料!接下來來講匯出整個資料庫的資料來做備份

安裝 MongoDB Database Tools

MongoDB 這邊有一個指令叫 mongodump 是用來匯出資料庫的資料,你可以匯出整個資料庫,也可以選擇匯出部分的 database 或 collection

不過要用這個功能前,得先額外安裝 MongoDB 的資料庫工具,我們先進到 MongoDB Database Tools 的下載頁面

https://ithelp.ithome.com.tw/upload/images/20220925/20132990ynsFAdmnlW.png

下載、解壓縮,然後裝好

匯出資料庫的資料

開啟終端,輸入以下指令就可以備份整個資料庫的資料了

mongodump -h [db_url] -o [backup_path] -u [user] -p [password]

另外我寫了一個 python script 每天去備份我的資料庫,提供給大家參考

import datetime
import os
import time
import shutil

# global settings ####################################
max_days=90

################################
db_host='your_host'
db_port='your_port'
db_url=db_host+':'+db_port
user='your_db_user'
password='your_db_password'

backup_path='backup_path'

# excute back-up program 
while True:    
    today=datetime.date.today().strftime("%Y-%m-%d")
    print('\n'*2+'back-up %s data' % backup_path[0:-1])
    print('located at %s:%s' % (db_host,db_port))
    if os.path.isdir(backup_path+today):
        shutil.rmtree(backup_path+today)
        os.mkdir(backup_path+today)
    else:
        os.mkdir(backup_path+today)

    os.system('mongodump -h '+db_url+' -o '+backup_path+today+' -u '+user+' -p '+password)
    print(today+' back-up %s data successfully' % backup_path[0:-1])
    # delete old back-up 
    totalDir=0
    dir_names=[]
    for dirPath, dirNames, fileNames in os.walk(backup_path):
        if dirPath==backup_path:
            for directories in dirNames:
                totalDir += 1
                dir_names+=[directories]
            break
    dir_names.sort()
    
    if totalDir>max_days:
        for i in range(totalDir-max_days):
            shutil.rmtree(backup_path+dir_names[i])

    time.sleep(86400)


上一篇
MongoDB 資料庫複制 & 身份驗證
下一篇
Nginx 介紹
系列文
Vue+Django+MongoDB+Nginx 全端開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言